import { BaseContext } from 'koa'
import { getManager, Repository } from 'typeorm'
import { User } from '../../entity/user'

// 获取token，并且变成全局的session
export async function middlewareParseSession(ctx: BaseContext, next) {
  if (!ctx.session) ctx.session = {}
  const session = ctx.session

  const token = ctx.cookies.get('token')
  session.token = token
  console.log('token ', token)

  // 获取用户信息
  const repo: Repository<User> = getManager().getRepository(User)
  const data: User = await repo.findOne({
    token: token,
  })

  if (data && data.token) {
    // 已登录
    session.isLogin = true
    session.userid = data.id
    session.nickname = data.nickname
    session.email = data.email
    session.lastLogin = data.lastLogin
  } else {
    // 未登录
    session.isLogin = false
  }

  await next()
}

export function isLogin (ctx: BaseContext): boolean {
  if (ctx.session && ctx.session.isLogin) return true

  console.log('需要登录 ctx.session = ', ctx.session)
  return false
}

/**
 * 检测是否需要反馈文本
 * @param ctx 上下文
 */
export function shouldBlock (ctx: BaseContext): string {
  if (!ctx.session.isLogin) return '未登录'
  // if (ctx.session.isAuth === USER_AUTH.NO_AUTH) return '未授权使用'
  // if (ctx.session.isAuth === USER_AUTH.BLOCKED) return '账号被禁用'

  return ''
}
